EC2(Amazon Linux 2022)にターミナルソフトからSSH接続できない場合の対処方法
困っていた内容
Amazon Linux 2022 でインスタンスを作成したところ、ターミナルソフトで EC2 インスタンスへ SSH 接続出来ません。どうすれば接続できますか?
どう対応すればいいの?
OpenSSHのリリースノートによると、OpenSSH 8.8よりssh-rsa(RSA/SHA1)での接続がデフォルトで無効になっています。
This release disables RSA signatures using the SHA-1 hash algorithm by default.
そのため、rsa-sha2-256/512(RSA/SHA2)に対応したターミナルソフトで rsa-sha2-256/512 利用の設定をするか、インスタンス側の OpenSSH 設定で ssh-rsa を許可する必要があります。
以前、OpenSSH 8.5 からデフォルトでssh-rsa(RSA/SHA1)が無効になると誤った記載をしておりました。混乱を招いたことお詫びいたします。
現在は記事を修正しております。
エラーの確認
今回テスト環境として用意した環境は以下となります。
AMI:al2022-ami-minimal-2022.0.20211201.0-kernel-5.10-x86_64
ターミナルソフト:RLogin(x64)Version 2.26.5
それでは、上記環境へRLoginの標準設定で接続しています。
エラーが発生しました。rsa-sha2-256/512 を使うようにと言われています。
ターミナルソフトの設定変更
では、rsa-sha2-256/512 で接続するように RLogin の設定を変更していきましょう。
- RLoginの編集画面で[プロトコル] > [RSA2認証鍵の署名方式を拡張(サーバーの対応が必要)]のプルダウンをクリックします
- SHA2-512(もしくは SHA2-256)を選択します
- [OK]をクリックします
再度接続
それでは、再度接続を試してみましょう
無事接続できました。
OpenSSH のバージョン確認
接続出来たので、OpenSSH のバージョンを確認してみましょう。
$ ssh -V OpenSSH_8.6p1, OpenSSL 1.1.1l FIPS 24 Aug 2021
OpenSSH 8.8 より前のバージョンですが、Amazon Linux 2022 では ssh-rsa での接続が無効化されているようですね。
許可設定を追加する方法を以下に記載しておきます。
(おまけ)ssh-rsa(RSA/SHA1)での接続を許可する方法
/etc/ssh/sshd_config
に
PubkeyAcceptedAlgorithms=+ssh-rsa
の行を追加することにより、ssh-rsa(RSA/SHA1)でも接続することが可能になります。
※環境によっては「sshd_config」の場合もありますので、設定ファイルの場所と名前は環境に併せて読み替えてください。
最後に
今回は Amazon Linux 2022 で発生した事象にはなりますが、 OpenSSH のアップデートに伴い他の ディストリビューション でも起こり得る事象です。
ssh-rsa の許可設定をすることで ssh-rsa でも接続は可能ですが、セキュリティ上の問題もあるため、rsa-sha2-256/512 での接続をご検討ください。
ターミナルソフトについては、rsa-sha2-256/512 に非対応の場合もありますため、 利用しているターミナルソフトの対応状況をご確認ください。
参考までに、知名度の高い Tera Term では、現時点(2021/12/9)では rsa-sha2-256/512 非対応となっており、 今後対応予定となっておりました。
参考資料
'OpenSSH: RSA/SHA1 disabled by default' - MARC
チケット #36109: rsa-sha2-256, rsa-sha2-512公開鍵アルゴリズムのサポート - Tera Term - OSDN